<template>
    <view class="container">
        <view class="content">
            <view class="list">
                <view class="item" @tap="tapitem(i)" :style="{marginTop:i.top?i.top:'1rpx'}" v-for="i in config" :key="i.key">
                    <view class="view">{{i.title}}</view>
                    <view>
                        <view class="text"
                              v-if="localData[i.key] !== null && localData[i.key] !== undefined"
                              :style="{ color: getStatusColor(i.key, localData[i.key]) }">
                            {{formatDataValue(i.key, localData[i.key])}}
                        </view>
                        <view class="text" v-else :style="{ color: '#07C160' }">空</view>
                    </view>
                </view>
            </view>
        </view>
    </view>
</template>



<script>
    import request from "@/util/request";

    export default {
        name: "currentData",
        props: {
            config: {
                type: Array,
                default: () => [
                    { title: '设备识别码', key: 'equipmentId' },
                    { title: '数据发送时间', key: 'sendTime' },
                    // 数据字段
                    { title: '事件类型', key: 'messagetype' },
                    { title: '设备类型', key: 'devicetype' },
                    // { title: '状态描述', key: 'statedesc' },
                    { title: '设备MAC', key: 'mac' },
                    // { title: 'ICCID', key: 'ccid' },
                    { title: 'IMSI', key: 'imsi' },
                    { title: '信号强度', key: 'dsignal' },
                    { title: '电池状态', key: 'batterys' },
                    { title: '电压值(mV)', key: 'voltagevalue' },
                    { title: '电量(%)', key: 'volvalue' },
                    // { title: '温度值(°C)', key: 'tvalue' },
                    // { title: '数据单位', key: 'dataunit' },
                    // { title: '监测值', key: 'data' },
                    // { title: '事件代码', key: 'bjcode' },
                    // { title: 'IMEI', key: 'imei' },
                    // { title: '防区号', key: 'ccc' },
                    // { title: '防拆状态', key: 'tamperstatus' },
                    // { title: '保留字段', key: 'cstatus' },
                    { title: '设备型号', key: 'dtypename' },
                    { title: '安装站点地址', key: 'siaddress' },
                    { title: '安装楼层', key: 'sitelname' },
                    { title: '安装详细地址', key: 'installaddress' },
                    { title: '经度', key: 'longitude' },
                    { title: '纬度', key: 'latitude' },
                    // 设备信息
                    { title: 'A相电压状态', key: 'uas' },
                    { title: 'A相电压值', key: 'ua' },
                    { title: 'B相电压状态', key: 'ubs' },
                    { title: 'B相电压值', key: 'ub' },
                    { title: 'C相电压状态', key: 'ucs' },
                    { title: 'C相电压值', key: 'uc' },
                    { title: 'A相电流状态', key: 'cas' },
                    { title: 'A相电流值', key: 'ca' },
                    { title: 'B相电流状态', key: 'cbs' },
                    { title: 'B相电流值', key: 'cb' },
                    { title: 'C相电流状态', key: 'ccs' },
                    { title: 'C相电流值', key: 'cc' },
                    { title: '漏电流状态', key: 'leakvs' },
                    { title: '漏电流值', key: 'leakv' },
                    { title: 'A相温度状态', key: 'tas' },
                    { title: 'A相温度值', key: 'ta' },
                    { title: 'B相温度状态', key: 'tbs' },
                    { title: 'B相温度值', key: 'tb' },
                    { title: 'C相温度状态', key: 'tcs' },
                    { title: 'C相温度值', key: 'tc' },
                    { title: 'D相温度状态', key: 'tds' },
                    { title: 'D相温度值', key: 'td' },
                    { title: 'N相温度状态', key: 'tns' },
                    { title: 'N相温度值', key: 'tn' },
                    { title: '功率因数', key: 'pf' },
                    { title: '有功电能', key: 'eqt' },
                    { title: '功率', key: 'p' },
                    { title: '总有功功率', key: 'q' },
                    { title: 'A相有功功率', key: 'qa' },
                    { title: 'B相有功功率', key: 'qb' },
                    { title: 'C相有功功率', key: 'qc' },
                ]
            },
            data: {
                type: Object,
                default: () => ({})
            }
        },
        data() {
            return {
                localData: {}
            };
        },
        onLoad(options) {
            console.log(options.equipmentId)
            this.equipmentInputStoreId = options.id;
            this.warnTime = options.warnTime;
            this.localData.equipmentId = options.equipmentId;
            this.fetchRealtimeData();
        },
        methods: {
            // 获取状态对应的颜色
            getStatusColor(key, value) {
                if(key === "messagetype") {
                    if (value === 2 || value === 4 || value === 6 || value === 13 || value === 15 || value === 17 || value === 9) {
                        return '#FF0000';
                    } else {
                        return '#07C160';
                    }
                }
                // 报警状态字段（值为1时报警）
                const alarmOneKeys = [
                    'leakvs', 'uas', 'ubs', 'ucs', 'cas',
                    'cbs', 'ccs', 'tas', 'tbs', 'tcs', 'tds', 'tns', 'tamperstatus'
                ];

                // 报警状态字段（值为2时报警）
                const alarmTwoKeys = [
                    'uas', 'ubs', 'ucs'
                ];

                // 电池低压字段
                if (key === "batterys") {
                    return value === 0 ? '#FF0000' : '#07C160';
                }

                // 报警字段处理（值为1时报警）
                if (alarmOneKeys.includes(key)) {
                    return value === 1 ? '#FF0000' : '#07C160';
                }

                // 报警字段处理（值为2时报警）
                if (alarmTwoKeys.includes(key)) {
                    return value === 2 ? '#FF0000' : '#07C160';
                }

                // 默认正常状态（绿色）
                return '#07C160';
            },
            // 格式化数据显示
            formatDataValue(key, value) {
                if(key === "messagetype") {
                    if (value === 0) {
                        return '其他';
                    } else if (value === 1) {
                        return '设备心跳';
                    } else if (value === 2) {
                        return '设备报警';
                    } else if (value === 3) {
                        return '报警恢复';
                    } else if (value === 4) {
                        return '防拆报警';
                    } else if (value === 5) {
                        return '防拆恢复';
                    } else if (value === 6) {
                        return '电池低压';
                    } else if (value === 7) {
                        return '电池低压恢复';
                    } else if (value === 8) {
                        return '自检';
                    } else if (value === 9) {
                        return '故障';
                    } else if (value === 10) {
                        return '故障恢复';
                    } else if (value === 11) {
                        return '测试';
                    } else if (value === 12) {
                        return '电量统计';
                    } else if (value === 13) {
                        return '温度报警';
                    } else if (value === 14) {
                        return '温度报警恢复';
                    } else if (value === 15) {
                        return '红外检测报警';
                    } else if (value === 16) {
                        return '红外检测报警恢复';
                    } else if (value === 17) {
                        return '气体浓度超标报警';
                    } else if (value === 18) {
                        return '气体浓度超标报警恢复';
                    } else {
                        return '正常';
                    }
                }

                // 处理特殊字段的显示格式
                if (key === 'batterys') {
                    return value === 1 ? '正常' : value === 0 ? '低压' : '';
                }
                if (key === 'uas' || key === 'ubs' || key === 'ucs') {
                    if (value === 0) {
                        return "正常";
                    } else if (value === 1) {
                        return "过压报警";
                    } else if (value === 2) {
                        return "欠压报警";
                    } else if (value === 3) {
                        return "过压预警";
                    } else if (value === 4) {
                        return "欠压预警";
                    } else {
                        return "";
                    }
                }
                if (key === 'cas' || key === 'cbs' || key === 'ccs' || key === 'leakvs') {
                    if (value === 0) {
                        return "正常";
                    } else if (value === 1) {
                        return "过流";
                    } else if (value === 2) {
                        return "预警";
                    } else {
                        return "";
                    }
                }
                if (key === 'tas' || key === 'tbs' || key === 'tcs' || key === 'tds' || key === 'tns') {
                    if (value === 0) {
                        return "正常";
                    } else if (value === 1) {
                        return "超温";
                    } else if (value === 2) {
                        return "预警";
                    } else {
                        return "";
                    }
                }
                if (key === 'tamperstatus') {
                    return value === 0 ? '闭合' : value === 1 ? '打开' : '';
                }
                if (key === 'leakvs') {
                    return value === 1 ? '漏电报警' : value === 2 ? '漏电预警' : value === 0 ? '正常' : '';
                }
                // 添加单位
                if (key === 'uas' || key === 'ubs' || key === 'ucs') {
                    return value + ' V';
                }
                if (key === 'cas' || key === 'cbs' || key === 'ccs') {
                    return value + ' A';
                }
                if (key === 'voltagevalue') return value + ' mV';
                if (key === 'volvalue') return value + ' %';
                if (key === 'tvalue' || key === 'tas' || key === 'tbs' || key === 'tcs' || key === 'tds' || key === 'tns') return value + ' °C';
                if (key === 'q' || key === 'qa' || key === 'qb' || key === 'qc') return value + ' W';
                if (key === 'p') return value + ' W';
                if (key === 'eqt') return value + ' kWh';
                if (key === 'leakv') return value + 'mA';

                return value;
            },

            // 从后端接口获取实时数据
            // 修正后的代码
            async fetchRealtimeData() {
                try {
                    let response = await request.get(`/current-dq/${this.equipmentInputStoreId}`);
                    if (response.data) {
                        console.log('获取实时数据成功:', response.data);
                        this.parseRealtimeData(response.data);
                    }
                } catch (error) {
                    console.error('获取实时数据失败:', error);
                }
            },

            // 解析实时数据到当前组件
            parseRealtimeData(data) {
                // 同时更新到列表数据
                Object.keys(data).forEach(key => {
                    this.$set(this.localData, key, data[key]);
                });
            },

            getUrl(url){
                if(!url){
                    return null;
                }

                const urlResult = {type: "String", data: ""};
                if(url.includes(',')){
                    const urlList = url.split(',');
                    return {
                        type: "Array",
                        data: urlList
                    };
                }

                return {
                    type: "String",
                    data: url
                };
            },

            tapitem(info) {
                console.log('点击项:', info);
            }
        }
    }
</script>

<style lang="scss" scoped>
    @import url("@/common/globleCSS/photoPreview.css");
    .container {
        height: 100%;
        padding-bottom: constant(safe-area-inset-bottom);
        /* 适配iOS<11.2 */
        padding-bottom: env(safe-area-inset-bottom);
        /* 适配iOS>11.2 */
    }

    .content {
        height: 100%;
        /* 假设底部吸底栏高度为50px */
        overflow-y: auto;
        /* 开启滚动 */
    }

    .list {
        display: flex;
        flex-direction: column;
        background-color: #f2f2f2;
    }

    .item {
        display: flex;
        align-items: center;
        background-color: #fff;
        justify-content: space-between;
        flex-wrap: wrap;
        padding: 0 30rpx;

        &:active {
            background-color: #f2f2f2;
        }

        .view {
            padding: 30rpx 0;
            font-size: 14px;
            flex: 1;
            color: #333333;
        }

        .text {
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 0;
            overflow: hidden;
            font-size: 14px;
            color: #999;
        }
    }
</style>
